package com.trkj.usercenter.charts;

import android.graphics.Color;
import android.util.Log;

import com.github.mikephil.charting.charts.BarChart;
import com.github.mikephil.charting.data.BarData;
import com.github.mikephil.charting.data.BarDataSet;
import com.github.mikephil.charting.data.BarEntry;
import com.github.mikephil.charting.utils.Legend;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 显示柱形图
 * Created by LiZanhong on 2015/07/08.
 */
public class ChartBarsUtils {
    private int[] colors = new int[]{
        Color.parseColor("#0066CC"),
            Color.parseColor("#00CC99"),
            Color.parseColor("#33CCCC"),
            Color.parseColor("#CC0099"),
            Color.parseColor("#FF00CC"),
            Color.parseColor("#FFCCCC"),
            Color.parseColor("#FF6666"),
            Color.parseColor("#CCCC33"),
            Color.parseColor("#669966"),
            Color.parseColor("#009966")
    };

    private String title;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void showChart(BarChart barChart, BarData barData) {
        barChart.setDescription("");// 数据描述

        // 如果没有数据的时候，会显示这个，类似ListView的EmptyView
        barChart.setNoDataTextDescription("没有数据可以显示.");
        barChart.setDrawGridBackground(false); // 是否显示表格颜色
        barChart.setTouchEnabled(true); // 设置是否可以触摸
        barChart.setDragEnabled(true);// 是否可以拖拽
        barChart.setScaleEnabled(true);// 是否可以缩放
        barChart.setPinchZoom(false);//
        barChart.setDrawBarShadow(true);
        barChart.setData(barData); // 设置数据
        Legend mLegend = barChart.getLegend(); // 设置比例图标示
        mLegend.setForm(Legend.LegendForm.CIRCLE);// 样式
        mLegend.setFormSize(8f);// 字体
        mLegend.setTextColor(Color.BLACK);// 颜色
        barChart.animateX(2500); // 立即执行的动画,x轴

    }

    public BarData getBarData(List<Map<String, Object>> list) {
        ArrayList<String> xValues = new ArrayList<String>();  //xVals用来表示每个柱形图上的内容
        ArrayList<BarEntry> yValues = new ArrayList<BarEntry>();  //yVals用来表示封装每个柱形图的实际数据

        // 饼图数据
        for (int i = 0; i < list.size(); i++) {
            String label = (String)list.get(i).get("label");
            xValues.add(label);  //显示标签
            Object obj = list.get(i).get("value");
            if(obj != null) {
                int one = Integer.parseInt(obj.toString());
                yValues.add(new BarEntry(one, i));
            }
        }


        // y轴的数据集合
        BarDataSet barDataSet = new BarDataSet(yValues, title);
        barDataSet.setColors(colors);
        Log.d("colors.size", String.valueOf(barDataSet.getColors().size()));

        ArrayList<BarDataSet> barDataSets = new ArrayList<BarDataSet>();
        barDataSets.add(barDataSet); // add the datasets

        BarData barData = new BarData(xValues, barDataSets);

        return barData;
    }
}
